Это SIMT (одна инструкция, несколько потоков) модель является сердцем архитектуры графических процессоров. Хотя вы пишете код для отдельных потоков, аппаратное обеспечение организует их в двухуровневую иерархию из сетей и блоков. Чтобы максимизировать эффективность, аппаратное обеспечение дополнительно делит эти блоки на единицы из 32 потоков, называемые варпами.
1. SIMT против SIMD
В отличие от SIMD процессоров (например, SSE/AVX), где вы вручную упаковываете данные в регистры, в модели SIMT потоки могут казаться независимыми. Аппаратное обеспечение автоматически группирует потоки в варпы, загружая одну инструкцию для всех 32 потоков, которые выполняются синхронно.
2. Правило линеаризации
Разработчики используют threadIdx.x, y, z для логики, но аппаратное обеспечение преобразует это в одномерную последовательность для планирования:
Поскольку размер по оси x является наиболее быстро изменяющимся индексом, потоки с последовательными значениями threadIdx.x обычно попадают в один и тот же варп, что критически важно для объединения памяти.